package com.qianfeng.zhangwei.day26;

import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ImageView;
import android.widget.ListView;
import android.widget.Toast;

import com.handmark.pulltorefresh.library.ILoadingLayout;
import com.handmark.pulltorefresh.library.PullToRefreshBase;
import com.handmark.pulltorefresh.library.PullToRefreshListView;
import com.nostra13.universalimageloader.core.ImageLoader;
import com.nostra13.universalimageloader.core.listener.PauseOnScrollListener;
import com.qianfeng.zhangwei.day26.adapter.MainAdapter;
import com.qianfeng.zhangwei.day26.bean.ShopInfo;
import com.qianfeng.zhangwei.day26.constants.UrlConstants;
import com.qianfeng.zhangwei.day26.task.MainTask;

import java.util.ArrayList;


/**
 * 万能快捷键
 * alt + 回车
 * 第一  初始化UI
 * 第二步  加载数据
 * xml
 * 从网络获取
 * json   常用的解析方式三种
 * 从本地数据库
 * 第三步  给ui赋值
 * 要实现自动刷新
 * 1> 注释源码pulltorefershListView 71-75行代码
 * 2> 在设置adapter之后调用 ptrListView.setRefreshing()方法
 *
 * pulltorefersh 注意事项
 *
 * 1> 给控件设置属性的时候一定要在设置adapter之前
 *
 * 2> 监听item的时候position从1开始 如果addheadview + 1
 *
 * ImageLoader 的使用方式
 * 1>在application里面全局配置imageload
 *
 * 2>配置imageload显示配置 必须开启内存缓存 ,磁盘缓存,下载图片时候显示的默认图片   下载失败时候显示大图片
 * 可选
 * 3 > 如果配置listview gridview  使用设置滑动监听 ptrListView.setOnScrollListener(new PauseOnScrollListener(ImageLoader.getInstance(),true,false));
 * 4 > 调用imageload.display显示图片  如果 设置监听的必须手动配置图片
 */
public class MainActivity extends AppCompatActivity implements View.OnClickListener, PullToRefreshBase.OnRefreshListener2<ListView>, AdapterView.OnItemClickListener {
    private PullToRefreshListView ptrListView;
    private ArrayList<ShopInfo> list = new ArrayList<>();
    private MainAdapter mainAdapter;
    private ILoadingLayout loadingLayout;
    private int page = 1;
    private boolean isRefresh = false;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        initView();
    }

    /**
     * 加载数据
     * 如果没有网络数据  从本地数据库获取数据
     * 从网络获取数据 显示数据 保存到本地
     */
    private void initData() {
        //线程池 + handler
        // 异步任务
        new MainTask(mainAdapter, list, ptrListView, page).execute(UrlConstants.getShopUrl(page));
    }

    /**
     * PullToRefreshListView 控件使用
     * 1> 实例化控件
     * 2> 设置模式
     * 3> 设置刷新监听
     */

    private void initView() {


        ptrListView = (PullToRefreshListView) this.findViewById(R.id.main_ptrlistview);
        /**
         *
         * 1>Mode.BOTH支持下拉刷新,上拉加载更多
         * 2> Mode.PULL_FROM_START 支持下拉刷新
         * 3>Mode.PULL_FROM_END 支持上拉加载更多
         *
         *
         */
        ptrListView.setMode(PullToRefreshBase.Mode.BOTH);
        ptrListView.setOnRefreshListener(this);
        ListView listView = ptrListView.getRefreshableView();

//        View view = getLayoutInflater().inflate(R.layout.main_head_layout,null);
//        TextView text = (TextView) view.findViewById(R.id.head);
//        //添加头部view
//        listView.addHeaderView(view);
        ptrListView.setOnScrollListener(new PauseOnScrollListener(ImageLoader.getInstance(), true, false));


        ImageView empty = (ImageView) this.findViewById(R.id.empty);
        listView.setEmptyView(empty);

//        listView.setOnItemClickListener(this);

        ptrListView.setOnItemClickListener(this);

        mainAdapter = new MainAdapter(list, this);
        ptrListView.setAdapter(mainAdapter);
        //获得刷新的view
        loadingLayout = ptrListView.getLoadingLayoutProxy();
//        loadingLayout.setLoadingDrawable(getResources().getDrawable(R.mipmap.ic_launcher));
//        loadingLayout.setPullLabel("pull label");

        ILoadingLayout headLayout = ptrListView.getLoadingLayoutProxy(true, false);
        ILoadingLayout footerLayout = ptrListView.getLoadingLayoutProxy(false, true);
        ptrListView.setRefreshing();

    }


    @Override
    public void onClick(View v) {

    }

    /**
     * @param refreshView
     */
    @Override
    public void onPullDownToRefresh(PullToRefreshBase<ListView> refreshView) {

        loadingLayout.setLastUpdatedLabel("最后更新的时间");

        //下拉刷新的回调接口
        page = 1;
        initData();

        isRefresh = true;


    }

    /**
     * 上拉加载更多的回调接口
     *
     * @param refreshView
     */
    @Override
    public void onPullUpToRefresh(PullToRefreshBase<ListView> refreshView) {
        page++;
        initData();

    }


    @Override
    public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
        Toast.makeText(this, "----->" + position, Toast.LENGTH_SHORT).show();
    }
}
